ptest: proc options(main);	/* parse procedures tester */
	%replace
	   TRUE by '1'b,
	   FALSE by '0'b;

	dcl fcbptr ptr;
	    
	dcl bufptr ptr;
	    

	dcl 1 fcb based(fcbptr),
	      2 drive fixed(7),
	      2 name char(8),
	      2 type char(3),
	      2 ext(4) fixed(7);


	dcl cmdtail char(127) based(bufptr);

	dcl
	    parse entry(ptr,ptr,fixed(7)),
	    fparse entry(ptr,ptr,fixed(7));


	dcl
	    UPPERCASE      char(26) static init('ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
	    LOWERCASE      char(26) static init('abcdefghijklmnopqrstuvwxyz'),
	    module         fixed(7) static init(0),
	    retcode        fixed(7) static init(0);

	/* base fcb at default fcb (5CH), cmdtail at default buffer (80H) */
	unspec(fcbptr) = '005C'b4;
	unspec(bufptr) = '0081'b4;
	
	    do while(module < 1 | module > 2);
	    put skip list('Test: (1) PARSE, (2) FPARSE ? ');
	    get list (module);
	    end;

	if fcb.name = '' then do;
            put skip list ('Enter Files: ');
	    get edit (cmdtail) (a);
	    cmdtail = translate(cmdtail,UPPERCASE,LOWERCASE);
	    end;

	    do while(retcode = 0);
	    if module = 1 then
	        call parse(bufptr,fcbptr,retcode);
	    else
	        call fparse(bufptr,fcbptr,retcode);
	    if retcode > 1 then
	        put skip(2) list('Invalid Filename');
	    else
	        put skip list('File:',drive,name,type,ext(1));
	    end;

	end ptest;
